import { defineStore } from 'pinia';

/**
 * 认证状态管理 Store
 * 替代原有的 Vuex store，管理用户登录状态和相关信息
 */
export const useAuthStore = defineStore('auth', {
  state: () => ({
    // 保留后用 - 用户认证令牌
    token: '',
    // 菜单列表 - 用户可访问的菜单项
    menuList: [],
    // 分配的厂商列表 - 用户关联的供应商
    supList: [],
    // 用户基本信息 - 用户个人资料
    userInfo: {}
  }),
  
  actions: {
    /**
     * 设置登录信息
     * @param {Object} loginInfo - 登录信息对象
     * @param {string} loginInfo.token - 认证令牌
     * @param {Array} loginInfo.menuList - 菜单列表
     * @param {Array} loginInfo.supList - 供应商列表
     * @param {Object} loginInfo.userInfo - 用户信息
     */
    setLoginInfo(loginInfo) {
      this.token = loginInfo.token;
      this.menuList = loginInfo.menuList;
      this.supList = loginInfo.supList;
      this.userInfo = loginInfo.userInfo;
    },

    /**
     * 清除登录信息 - 用于退出登录
     */
    clearLoginInfo() {
      this.token = '';
      this.menuList = [];
      this.supList = [];
      this.userInfo = {};
    },

    /**
     * 保存登录信息 - 封装设置登录信息的操作
     * @param {Object} loginInfo - 登录信息对象
     */
    saveLoginInfo(loginInfo) {
      this.setLoginInfo(loginInfo);
    }
  }
});